package com.aaa.tars.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * (Order)实体类
 *
 * @author ghzmakejava
 * @since 2025-09-10 10:49:46
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Order {
    private Integer orderId;
    // 新增：关联游客ID（外键，对应visitors.visitor_id，订单归属人）
    private Integer visitorId;
    // 新增：订单创建时间（数据库自动生成，无需手动赋值）
    private Date orderTime;
    private String orderNo;
    private Date orderYwrq;
    private String orderPtype;
    private Integer orderCount;
    // 建议改为BigDecimal避免浮点精度问题（原Double）
    private BigDecimal orderTprice;
    private String orderQpname;
    private String orderQprsj;
    // 扩展长度：支持"待支付""已取消""已使用"等完整状态
    private String orderState;
    
    // 取票验证码
    private String ticketVerificationCode;

    // 调整关联关系：
    // 1. 订单→游客：一对一（一个订单归属一个游客，可选关联游客详情）
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Visitors visitor;
    // 2. 订单→订单详情：一对多（一个订单包含多个门票条目）
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<OrderItem> orderItemList;
    // 3. 移除原多对多游客关联（visitorsList），若需多个游客（如多人门票），可在OrderItem或新增中间表扩展

    // 保留非数据库字段（用于前端搜索）
    private String scenicName;
    private String ticketName;
    private Date payTime;
}